<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>空搜索 | Elasticsearch: 权威指南 | Elastic</title>
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
</head>
<body>
<div class="main-container">
    <section id="content">
        
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原文地址: <a href="https://www.elastic.co/guide/cn/elasticsearch/guide/current/empty-search.html" rel="nofollow">https://www.elastic.co/guide/cn/elasticsearch/guide/current/empty-search.html</a>, 版权归 www.elastic.co 所有<br/>
                            英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/guide/current/empty-search.html" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/guide/current/empty-search.html</a>
                            </div>
                        <!-- start body -->
                  <div class="page_header">
<b>请注意:</b><br>本书基于 Elasticsearch 2.x 版本，有些内容可能已经过时。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch: 权威指南</a></span>
»
<span class="breadcrumb-link"><a href="getting-started.html">基础入门</a></span>
»
<span class="breadcrumb-link"><a href="search.html">搜索——最基本的工具</a></span>
»
<span class="breadcrumb-node">空搜索</span>
</div>
<div class="navheader">
<span class="prev">
<a href="search.html">« 搜索——最基本的工具</a>
</span>
<span class="next">
<a href="multi-index-multi-type.html">多索引，多类型 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="empty-search"></a>空搜索<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/050_Search/05_Empty_search.asciidoc">edit</a>
</h2>
</div></div></div>
<p>搜索API的最基础的形式是没有指定任何查询的空搜索，它简单地返回集群中所有索引下的所有文档：</p>
<div class="pre_wrapper lang-sense">
<pre class="programlisting prettyprint lang-sense">GET /_search</pre>
</div>
<div class="sense_widget" data-snippet="snippets/050_Search/05_Empty_search.json"></div>
<p>返回的结果（为了界面简洁编辑过的）像这样：</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
   "hits" : {
      "total" :       14,
      "hits" : [
        {
          "_index":   "us",
          "_type":    "tweet",
          "_id":      "7",
          "_score":   1,
          "_source": {
             "date":    "2014-09-17",
             "name":    "John Smith",
             "tweet":   "The Query DSL is really powerful and flexible",
             "user_id": 2
          }
       },
        ... 9 RESULTS REMOVED ...
      ],
      "max_score" :   1
   },
   "took" :           4,
   "_shards" : {
      "failed" :      0,
      "successful" :  10,
      "total" :       10
   },
   "timed_out" :      false
}</pre>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_hits"></a>hits<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/050_Search/05_Empty_search.asciidoc">edit</a>
</h3>
</div></div></div>
<p>返回结果中最重要的部分是 <code class="literal">hits</code> ，它包含 <code class="literal">total</code> 字段来表示匹配到的文档总数，并且一个 <code class="literal">hits</code> 数组包含所查询结果的前十个文档。</p>
<p>在 <code class="literal">hits</code> 数组中每个结果包含文档的 <code class="literal">_index</code> 、 <code class="literal">_type</code> 、 <code class="literal">_id</code> ，加上 <code class="literal">_source</code> 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎，仅仅返回文档的ID，需要你单独去获取文档。</p>
<p>每个结果还有一个 <code class="literal">_score</code>  ，它衡量了文档与查询的匹配程度。默认情况下，首先返回最相关的文档结果，就是说，返回的文档是按照 <code class="literal">_score</code> 降序排列的。在这个例子中，我们没有指定任何查询，故所有的文档具有相同的相关性，因此对所有的结果而言 <code class="literal">1</code> 是中性的 <code class="literal">_score</code> 。</p>
<p><code class="literal">max_score</code> 值是与查询所匹配文档的 <code class="literal">_score</code> 的最大值。</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_took"></a>took<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/050_Search/05_Empty_search.asciidoc">edit</a>
</h3>
</div></div></div>
<p><code class="literal">took</code> 值告诉我们执行整个搜索请求耗费了多少毫秒。</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_shards"></a>shards<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/050_Search/05_Empty_search.asciidoc">edit</a>
</h3>
</div></div></div>
<p><code class="literal">_shards</code> 部分告诉我们在查询中参与分片的总数，以及这些分片成功了多少个失败了多少个。正常情况下我们不希望分片失败，但是分片失败是可能发生的。如果我们遭遇到一种灾难级别的故障，在这个故障中丢失了相同分片的原始数据和副本，那么对这个分片将没有可用副本来对搜索请求作出响应。假若这样，Elasticsearch 将报告这个分片是失败的，但是会继续返回剩余分片的结果。</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_timeout"></a>timeout<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/050_Search/05_Empty_search.asciidoc">edit</a>
</h3>
</div></div></div>
<p><code class="literal">timed_out</code> 值告诉我们查询是否超时。默认情况下，搜索请求不会超时。如果低响应时间比完成结果更重要，你可以指定 <code class="literal">timeout</code> 为 10 或者 10ms（10毫秒），或者 1s（1秒）：</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">GET /_search?timeout=10ms</pre>
</div>
<p>在请求超时之前，Elasticsearch 将会返回已经成功从每个分片获取的结果。</p>
<div class="warning admon">
<div class="icon"></div>
<div class="admon_content">
<p>应当注意的是 <code class="literal">timeout</code> 不是停止执行查询，它仅仅是告知正在协调的节点返回到目前为止收集的结果并且关闭连接。在后台，其他的分片可能仍在执行查询即使是结果已经被发送了。</p>
<p>使用超时是因为 SLA(服务等级协议)对你是很重要的，而不是因为想去中止长时间运行的查询。</p>
</div>
</div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="search.html">« 搜索——最基本的工具</a>
</span>
<span class="next">
<a href="multi-index-multi-type.html">多索引，多类型 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>